/**
 * 3
 *  
 * @Author : roryrywang
 * @DateTime : 24-8-24 下午3:42
 */

#include <iostream>
#include <vector>
#include <algorithm>
#include <unordered_map>
#include <queue>

using namespace std;

//int main() {
//    int n;
//    cin >> n;
//    vector<long long> a(n);
//    for (int i = 0; i < n; ++i) {
//        cin >> a[i];
//    }
//
//    int resl = 0;
//    int resr = 0;
//
//    int l = 0;
//    int r = 1;
//    long long minNum = min(a[l], a[r]);
//    long long maxNum = max(a[l], a[r]);
//
//    for (int i = 2; i < a.size(); ++i) {
//        if (a[i] <= maxNum - minNum || a[i] >= maxNum + minNum) {
//            if ((r - l) > (resr - resl)) resl = l, resr = r;
//            l = i, r = i + 1, i++;
//        } else {
//            minNum = min(minNum, a[i]);
//            maxNum = max(maxNum, a[i]);
//        }
//    }
//
//    cout << resl + 1 << " " << resr + 1;
//
//    return 0;
//}

// 双指针+堆 维护区间内最大最小值
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<long long> a(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }

    int resl = 0;
    int resr = 1;

    int l = 0;
    int r = 1;
    unordered_map<long long, int> map;
    priority_queue<long long, vector<long long>, greater<>> minNum;
    priority_queue<long long> maxNum;

    for (r; r < a.size(); ++r) {
        if (r - l == 1) {
            minNum.push(a[l]);
            minNum.push(a[r]);
            maxNum.push(a[l]);
            maxNum.push(a[r]);
            map[a[l]]++;
            map[a[r]]++;
            continue;
        }
        if (a[r] > maxNum.top() - minNum.top() && a[r] < maxNum.top() + minNum.top()) {
            minNum.push(a[r]);
            maxNum.push(a[r]);
            map[a[r]]++;
            if ((r - l) > (resr - resl)) resl = l, resr = r;
        } else {
            while (l < r + 1) {
                map[a[l]]--;
                if (map[a[l]] == 0) {
                    if (a[l] == maxNum.top()) {
                        maxNum.pop();
                        while (map[maxNum.top()] == 0) {
                            maxNum.pop();
                        }
                    }
                    if (a[l] == minNum.top()) {
                        minNum.pop();
                        while (map[minNum.top()] == 0) {
                            minNum.pop();
                        }
                    }
                    if (a[r] > maxNum.top() - minNum.top() && a[r] < maxNum.top() + minNum.top()) {
                        l++;
                        break;
                    }
                }
                l++;
            }
        }
    }

    cout << resl + 1 << " " << resr + 1;

    return 0;
}

// dp
//int main() {
//    int n;
//    cin >> n;
//    vector<int> a(n);
//    for (int i = 0; i < n; ++i) {
//        cin >> a[i];
//    }
//
//    int resl = 0;
//    int resr = 0;
//
//    bool f[n][n];
//    int minNum[n][n];
//    int maxNum[n][n];
//
//    for (int len = 2; len <= n; ++len) {
//        for (int i = 0, j = i + len - 1; j < n; ++i, ++j) {
//            if (len == 2) {
//                f[i][j] = true;
//                minNum[i][j] = min(a[i], a[j]);
//                maxNum[i][j] = max(a[i], a[j]);
//            } else {
//                f[i][j] = false;
//                if (f[i][j - 1]) {
//                    if (a[j] > maxNum[i][j - i] - minNum[i][j - i] && a[j] < maxNum[i][j - i] + minNum[i][j - i]) {
//                        f[i][j] = true;
//                        minNum[i][j] = min(minNum[i][j - 1], a[j]);
//                        maxNum[i][j] = max(maxNum[i][j - 1], a[j]);
//                    }
//                }
//                if (f[i - 1][j]) {
//                    if (a[j] > maxNum[i - 1][j] - minNum[i - 1][j] && a[j] < maxNum[i - 1][j] + minNum[i - 1][j]) {
//                        f[i][j] = true;
//                        minNum[i][j] = min(minNum[i - 1][j], a[j]);
//                        maxNum[i][j] = max(maxNum[i - 1][j], a[j]);
//                    }
//                }
//            }
//            if (f[i][j] && (j - i) > (resr - resl)) resl = i, resr = j;
//        }
//    }
//
//    cout << resl + 1 << " " << resr + 1;
//
//    return 0;
//}